package com.rc.saas.tenant.common.enums;

/***
 * 0 正常结束BMS主动停机
 * 1 接收BMS的辨识报文超时
 * 2 接收电池充电参数报文超时
 * 3 接收BMS完成充电准备报文超时
 * 4 接收电池充总状态报文超时
 * 5 接收电池充电需求报文超时
 * 6 接收BMS中止充电报文超时
 * 7 接收BMS充电统计报文超时
 * 20 收到bem报文停止
 * 21 收到bst报文停止
 * 22 收到BSM报文错误停止
 * 23 BMS 温度过高异常
 * 24 单体电压过高异常
 * 25 需求电流异常
 * 30 BST 的 SOC 目标值
 * 31 BST 的电压设定值
 * 32 BST 单体电压满
 * 33 BST_00_6
 * 34 BST 绝缘故障
 * 35 BST 连接器过温
 * 36 BST 元件过温
 * 37 BST 连接器故障
 * 38 BST 电池组过温
 * 39 BST 其他故障
 * 40 BST_02_4BMS
 * 41 BST_02_6BMS
 * 42 BST电流过大BMS
 * 43 BST电压异常BMS
 * 200 用户中止
 * 201 控制板上报告警
 * 202 控制板上报告警
 * 300 CC1连接断开
 * 301 用户刷卡停止
 * 302 紧急停机
 * 303 预处理加电失败
 * 304 绝缘检测异常
 * 305 控制板通讯异常
 * 306 充电电量达到设定值
 * 307 充电时间达到设定值
 * 308 充电金额达到设定值
 * 309 电表通讯异常
 * 310 充电金额超过用户卡余额
 * 311 后台终止
 * 312 系统告警中止控制板上报系统故障
 * 313 后台通讯中止集中器通讯断开
 * 314 充电电压异常中止控制板上传充电电压比需求电压大，充电机主动停止
 * 315 充电电流异常中止控制板上传充电电流比需求电流大，充电机主动停止
 * 316 BMS的SOC满中止系统SOC达到设定值（默认100%），
 * 317 电表电量异常增大中止 到较大的值
 * 318 电表电量异常变小中止到较小的值
 * 319 VIN 码不匹配
 * 401 管理员界面中止
 * 402 软件升级
 * 403 充电启动超时
 * 404 BMS单体动力蓄电池电压异常
 * 405 BMS整车动力蓄电池荷电状态系统突然断电充电机主动停止
 * 406 BMS动力蓄电池充电过电流
 * 407 BMS动力蓄电池温度过高
 * 408 BMS动力蓄电池绝缘状态
 * 409 BMS蓄电池组输出连接器状态
 * 410 充电电压超过BMS最大允许值
 * 411 BMS其他位状态异常
 * 412 BCS上传电压异常
 * 2000 系统其他故障
 * 2001 紧急停机故障
 * 2002 绝缘故障
 * 2003 直流过压
 * 2004 直流欠压
 * 2005 软启失败
 * 2006 输出反接故障
 * 2007 接触器异常
 * 2008 模块故障
 * 2009 电网电压高
 * 2010 电网电压低
 * 2011 电网频率高
 * 2012 电网频率低
 * 2013 模块通信异常
 * 2013 模块类型不一致
 * 2015 系统辅源掉电
 * 2016 直流输出断路
 * 2017 进风口过温保护
 * 2018 进风口低温保护
 * 2019 出风口过温保护
 * 2020 群充模块过温
 * 2021 防雷故障
 * 2022 交流接触器异常
 * 100001 迪文通信告警
 * 100002 读卡器通信告警
 * 100003 防雷器故障
 * 100004 主开关及熔断器故障
 * 100005 紧急停机故障
 * 100032 电表1通信异常
 * 100033 电表2通信异常
 * 101000 断开连接
 * 101001 未准备就绪
 * 101002 充电过压
 * 101003 充电过流
 * 101004 充电欠压
 * 101005 用户刷卡停止充电
 * 101006 后台停止
 * 101007 充电时间达到设定值
 * 101008 充电金额达到设定值
 * 101009 充电电量达到设定值
 * 101010 应用软件升级停止
 * 101011 系统掉电停止
 * 101012 未知原因
 * 101013 用户界面中止
 * 101014 金额不足
 * 101015 电池充满
 * 101016 达到用户设定充电条件停止
 */
public enum RsStopReasonEnum {
    stop_code_0(0, "正常结束BMS主动停机"),
    stop_code_1(1, "接收BMS的辨识报文超时"),
    stop_code_2(2, "接收电池充电参数报文超时"),
    stop_code_3(3, "接收BMS完成充电准备报文超时"),
    stop_code_4(4, "接收电池充总状态报文超时"),
    stop_code_5(5, "接收电池充电需求报文超时"),
    stop_code_6(6, "接收BMS中止充电报文超时"),
    stop_code_7(7, "接收BMS充电统计报文超时"),
    stop_code_20(20, "收到bem报文停止"),
    stop_code_21(21, "收到bst报文停止"),
    stop_code_22(22, "收到BSM报文错误停止"),
    stop_code_23(23, "BMS温度过高异常"),
    stop_code_24(24, "单体电压过高异常"),
    stop_code_25(25, "需求电流异常"),
    stop_code_30(30, "BST的SOC目标值"),
    stop_code_31(31, "BST的电压设定值"),
    stop_code_32(32, "BST单体电压满"),
    stop_code_33(33, "BST_00_6"),
    stop_code_34(34, "BST绝缘故障"),
    stop_code_35(35, "BST连接器过温"),
    stop_code_36(36, "BST元件过温"),
    stop_code_37(37, "BST连接器故障"),
    stop_code_38(38, "BST电池组过温"),
    stop_code_39(39, "BST其他故障"),
    stop_code_40(40, "BST_02_4BMS"),
    stop_code_41(41, "BST_02_6BMS"),
    stop_code_42(42, "BST电流过大BMS"),
    stop_code_43(43, "BST电压异常BMS"),
    stop_code_200(200, "用户中止"),
    stop_code_201(201, "控制板上报告警"),
    stop_code_202(202, "控制板上报告警"),
    stop_code_300(300, "CC1连接断开"),
    stop_code_301(301, "用户刷卡停止"),
    stop_code_302(302, "紧急停机"),
    stop_code_303(303, "预处理加电失败"),
    stop_code_304(304, "绝缘检测异常"),
    stop_code_305(305, "控制板通讯异常"),
    stop_code_306(306, "充电电量达到设定值"),
    stop_code_307(307, "充电时间达到设定值"),
    stop_code_308(308, "充电金额达到设定值"),
    stop_code_309(309, "电表通讯异常"),
    stop_code_310(310, "充电金额超过用户卡余额"),
    stop_code_311(311, "后台终止"),
    stop_code_312(312, "系统告警中止控制板上报系统故障"),
    stop_code_313(313, "后台通讯中止集中器通讯断开"),
    stop_code_314(314, "充电电压异常中止控制板上传充电电压比需求电压大，充电机主动停止"),
    stop_code_315(315, "充电电流异常中止控制板上传充电电流比需求电流大，充电机主动停止"),
    stop_code_316(316, "BMS的SOC满中止系统SOC达到设定值（默认100%）"),
    stop_code_317(317, "电表电量异常增大中止到较大的值"),
    stop_code_318(318, "电表电量异常变小中止到较小的值"),
    stop_code_319(319, "VIN码不匹配"),
    stop_code_401(401, "管理员界面中止"),
    stop_code_402(402, "软件升级"),
    stop_code_403(403, "充电启动超时"),
    stop_code_404(404, "BMS单体动力蓄电池电压异常"),
    stop_code_405(405, "BMS整车动力蓄电池荷电状态系统突然断电充电机主动停止"),
    stop_code_406(406, "BMS动力蓄电池充电过电流"),
    stop_code_407(407, "BMS动力蓄电池温度过高"),
    stop_code_408(408, "BMS动力蓄电池绝缘状态"),
    stop_code_409(409, "BMS蓄电池组输出连接器状态"),
    stop_code_410(410, "充电电压超过BMS最大允许值"),
    stop_code_411(411, "BMS其他位状态异常"),
    stop_code_412(412, "BCS上传电压异常"),
    stop_code_2000(2000, "系统其他故障"),
    stop_code_2001(2001, "紧急停机故障"),
    stop_code_2002(2002, "绝缘故障"),
    stop_code_2003(2003, "直流过压"),
    stop_code_2004(2004, "直流欠压"),
    stop_code_2005(2005, "软启失败"),
    stop_code_2006(2006, "输出反接故障"),
    stop_code_2007(2007, "接触器异常"),
    stop_code_2008(2008, "模块故障"),
    stop_code_2009(2009, "电网电压高"),
    stop_code_2010(2010, "电网电压低"),
    stop_code_2011(2011, "电网频率高"),
    stop_code_2012(2012, "电网频率低"),
    stop_code_2013(2013, "模块通信异常"),
    stop_code_2014(2014, "模块类型不一致"),
    stop_code_2015(2015, "系统辅源掉电"),
    stop_code_2016(2016, "直流输出断路"),
    stop_code_2017(2017, "进风口过温保护"),
    stop_code_2018(2018, "进风口低温保护"),
    stop_code_2019(2019, "出风口过温保护"),
    stop_code_2020(2020, "群充模块过温"),
    stop_code_2021(2021, "防雷故障"),
    stop_code_2022(2022, "交流接触器异常"),
    stop_code_100001(100001, "迪文通信告警"),
    stop_code_100002(100002, "读卡器通信告警"),
    stop_code_100003(100003, "防雷器故障"),
    stop_code_100004(100004, "主开关及熔断器故障"),
    stop_code_100005(100005, "紧急停机故障"),
    stop_code_100032(100032, "电表1通信异常"),
    stop_code_100033(100033, "电表2通信异常"),
    stop_code_101000(101000, "断开连接"),
    stop_code_101001(101001, "未准备就绪"),
    stop_code_101002(101002, "充电过压"),
    stop_code_101003(101003, "充电过流"),
    stop_code_101004(101004, "充电欠压"),
    stop_code_101005(101005, "用户刷卡停止充电"),
    stop_code_101006(101006, "后台停止"),
    stop_code_101007(101007, "充电时间达到设定值"),
    stop_code_101008(101008, "充电金额达到设定值"),
    stop_code_101009(101009, "充电电量达到设定值"),
    stop_code_101010(101010, "应用软件升级停止"),
    stop_code_101011(101011, "系统掉电停止"),
    stop_code_101012(101012, "未知原因"),
    stop_code_101013(101013, "用户界面中止"),
    stop_code_101014(101014, "金额不足"),
    stop_code_101015(101015, "电池充满"),
    stop_code_101016(101016, "达到用户设定充电条件停止");


    private Integer code;
    private String msg;

    RsStopReasonEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }


    /**
     * 解析code
     *
     * @param code
     * @return
     */
    public static String getStopReasonResult(String code) {
        Integer intCode = Integer.parseInt(code, 16);
        Class<RsStopReasonEnum> enumClass = RsStopReasonEnum.class;
        for (RsStopReasonEnum rsStopReasonEnum : enumClass.getEnumConstants()) {
            if (intCode == rsStopReasonEnum.getCode()) {
                return rsStopReasonEnum.getMsg();
            }
        }
        return "该停止方式未知:" + intCode;

    }


    /**
     * 解析code
     *
     * @param code
     * @return
     */
    public static String getStopReasonResultWithInt(String code) {
        //Integer intCode = Integer.parseInt(code, 16);
        Class<RsStopReasonEnum> enumClass = RsStopReasonEnum.class;
        for (RsStopReasonEnum rsElecPileStopReasonEnum : enumClass.getEnumConstants()) {
            if (Integer.valueOf(code).equals(rsElecPileStopReasonEnum.getCode())) {
                return rsElecPileStopReasonEnum.getMsg();
            }
        }
        return "该停止方式未知:" + code;

    }
}
